Is there really anything to gain with complex design? [duplicate]
        Posted  
        
            by 
                SB2055
            
        on Programmers
        
        See other posts from Programmers
        
            or by SB2055
        
        
        
        Published on 2013-11-08T16:34:41Z
        Indexed on 
            2013/11/08
            22:14 UTC
        
        
        Read the original article
        Hit count: 314
        
This question already has an answer here:
- What is enterprise software, exactly? 8 answers
 
I've been working for a consulting firm for some time, with clients of various sizes, and I've seen web applications ranging in complexity from really simple:
- MVC
 - Service Layer
 - EF
 - DB
 
To really complex:
- MVC
 - UoW
 - DI / IoC
 - Repository
 - Service
 - UI Tests
 - Unit Tests
 - Integration Tests
 
But on both ends of the spectrum, the quality requirements are about the same. In simple projects, new devs / consultants can hop on, make changes, and contribute immediately, without having to wade through 6 layers of abstraction to understand what's going on, or risking misunderstanding some complex abstraction and costing down the line.
In all cases, there was never a need to actually make code swappable or reusable - and the tests were never actually maintained past the first iteration because requirements changed, it was too time-consuming, deadlines, business pressure, etc etc.
So if - in the end -
- testing and interfaces aren't used
 - rapid development (read: cost-savings) is a priority
 - the project's requirements will be changing a lot while in development
 
...would it be wrong to recommend a super-simple architecture, even to solve a complex problem, for an enterprise client? Is it complexity that defines enterprise solutions, or is it the reliability, # concurrent users, ease-of-maintenance, or all of the above?
I know this is a very vague question, and any answer wouldn't apply to all cases, but I'm interested in hearing from devs / consultants that have been in the business for a while and that have worked with these varying degrees of complexity, to hear if the cool-but-expensive abstractions are worth the overall cost, at least while the project is in development.
© Programmers or respective owner